from __clrclasses__.System import Type as _n_0_t_0
from __clrclasses__.System import Array as _n_0_t_1
from __clrclasses__.System.Collections.Generic import IList as _n_1_t_0
from __clrclasses__.System.Collections.Generic import IEnumerable as _n_1_t_1
from __clrclasses__.System.Collections.Generic import IDictionary as _n_1_t_2
from __clrclasses__.System.Collections.ObjectModel import ReadOnlyCollection as _n_2_t_0
from __clrclasses__.System.ComponentModel import INotifyPropertyChanged as _n_3_t_0
from __clrclasses__.System.Linq.Expressions import ExpressionType as _n_4_t_0
from __clrclasses__.System.Linq.Expressions import Expression as _n_4_t_1
from __clrclasses__.System.Runtime.CompilerServices import CallSiteBinder as _n_5_t_0
import typing
class BinaryOperationBinder(DynamicMetaObjectBinder):
    @property
    def Operation(self) -> _n_4_t_0:"""Operation { get; } -> ExpressionType"""
    def FallbackBinaryOperation(self, target: DynamicMetaObject, arg: DynamicMetaObject, errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackBinaryOperation(self, target: DynamicMetaObject, arg: DynamicMetaObject) -> DynamicMetaObject:...
class BindingRestrictions(object):
    Empty: int
    @staticmethod
    def Combine(contributingObjects: _n_1_t_0[DynamicMetaObject]) -> BindingRestrictions:...
    @staticmethod
    def GetExpressionRestriction(expression: _n_4_t_1) -> BindingRestrictions:...
    @staticmethod
    def GetInstanceRestriction(expression: _n_4_t_1, instance: object) -> BindingRestrictions:...
    @staticmethod
    def GetTypeRestriction(expression: _n_4_t_1, type: _n_0_t_0) -> BindingRestrictions:...
    def Merge(self, restrictions: BindingRestrictions) -> BindingRestrictions:...
    def ToExpression(self) -> _n_4_t_1:...
class CallInfo(object):
    @property
    def ArgumentCount(self) -> int:"""ArgumentCount { get; } -> int"""
    @property
    def ArgumentNames(self) -> _n_2_t_0[str]:"""ArgumentNames { get; } -> ReadOnlyCollection"""
    def __init__(self, argCount: int, argNames: _n_0_t_1[str]) -> CallInfo:...
    def __init__(self, argCount: int, argNames: _n_1_t_1[str]) -> CallInfo:...
class ConvertBinder(DynamicMetaObjectBinder):
    @property
    def Explicit(self) -> bool:"""Explicit { get; } -> bool"""
    @property
    def Type(self) -> _n_0_t_0:"""Type { get; } -> Type"""
    def FallbackConvert(self, target: DynamicMetaObject, errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackConvert(self, target: DynamicMetaObject) -> DynamicMetaObject:...
class CreateInstanceBinder(DynamicMetaObjectBinder):
    @property
    def CallInfo(self) -> CallInfo:"""CallInfo { get; } -> CallInfo"""
    def FallbackCreateInstance(self, target: DynamicMetaObject, args: _n_0_t_1[DynamicMetaObject], errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackCreateInstance(self, target: DynamicMetaObject, args: _n_0_t_1[DynamicMetaObject]) -> DynamicMetaObject:...
class DeleteIndexBinder(DynamicMetaObjectBinder):
    @property
    def CallInfo(self) -> CallInfo:"""CallInfo { get; } -> CallInfo"""
    def FallbackDeleteIndex(self, target: DynamicMetaObject, indexes: _n_0_t_1[DynamicMetaObject], errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackDeleteIndex(self, target: DynamicMetaObject, indexes: _n_0_t_1[DynamicMetaObject]) -> DynamicMetaObject:...
class DeleteMemberBinder(DynamicMetaObjectBinder):
    @property
    def IgnoreCase(self) -> bool:"""IgnoreCase { get; } -> bool"""
    @property
    def Name(self) -> str:"""Name { get; } -> str"""
    def FallbackDeleteMember(self, target: DynamicMetaObject, errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackDeleteMember(self, target: DynamicMetaObject) -> DynamicMetaObject:...
class DynamicMetaObject(object):
    EmptyMetaObjects: int
    @property
    def Expression(self) -> _n_4_t_1:"""Expression { get; } -> Expression"""
    @property
    def HasValue(self) -> bool:"""HasValue { get; } -> bool"""
    @property
    def LimitType(self) -> _n_0_t_0:"""LimitType { get; } -> Type"""
    @property
    def Restrictions(self) -> BindingRestrictions:"""Restrictions { get; } -> BindingRestrictions"""
    @property
    def RuntimeType(self) -> _n_0_t_0:"""RuntimeType { get; } -> Type"""
    @property
    def Value(self) -> object:"""Value { get; } -> object"""
    def __init__(self, expression: _n_4_t_1, restrictions: BindingRestrictions, value: object) -> DynamicMetaObject:...
    def __init__(self, expression: _n_4_t_1, restrictions: BindingRestrictions) -> DynamicMetaObject:...
    def BindBinaryOperation(self, binder: BinaryOperationBinder, arg: DynamicMetaObject) -> DynamicMetaObject:...
    def BindConvert(self, binder: ConvertBinder) -> DynamicMetaObject:...
    def BindCreateInstance(self, binder: CreateInstanceBinder, args: _n_0_t_1[DynamicMetaObject]) -> DynamicMetaObject:...
    def BindDeleteIndex(self, binder: DeleteIndexBinder, indexes: _n_0_t_1[DynamicMetaObject]) -> DynamicMetaObject:...
    def BindDeleteMember(self, binder: DeleteMemberBinder) -> DynamicMetaObject:...
    def BindGetIndex(self, binder: GetIndexBinder, indexes: _n_0_t_1[DynamicMetaObject]) -> DynamicMetaObject:...
    def BindGetMember(self, binder: GetMemberBinder) -> DynamicMetaObject:...
    def BindInvoke(self, binder: InvokeBinder, args: _n_0_t_1[DynamicMetaObject]) -> DynamicMetaObject:...
    def BindInvokeMember(self, binder: InvokeMemberBinder, args: _n_0_t_1[DynamicMetaObject]) -> DynamicMetaObject:...
    def BindSetIndex(self, binder: SetIndexBinder, indexes: _n_0_t_1[DynamicMetaObject], value: DynamicMetaObject) -> DynamicMetaObject:...
    def BindSetMember(self, binder: SetMemberBinder, value: DynamicMetaObject) -> DynamicMetaObject:...
    def BindUnaryOperation(self, binder: UnaryOperationBinder) -> DynamicMetaObject:...
    @staticmethod
    def Create(value: object, expression: _n_4_t_1) -> DynamicMetaObject:...
    def GetDynamicMemberNames(self) -> _n_1_t_1[str]:...
class DynamicMetaObjectBinder(_n_5_t_0):
    @property
    def ReturnType(self) -> _n_0_t_0:"""ReturnType { get; } -> Type"""
    def Defer(self, args: _n_0_t_1[DynamicMetaObject]) -> DynamicMetaObject:...
    def Defer(self, target: DynamicMetaObject, args: _n_0_t_1[DynamicMetaObject]) -> DynamicMetaObject:...
    def GetUpdateExpression(self, type: _n_0_t_0) -> _n_4_t_1:...
class DynamicObject(IDynamicMetaObjectProvider):
    def GetDynamicMemberNames(self) -> _n_1_t_1[str]:...
    def TryBinaryOperation(self, binder: BinaryOperationBinder, arg: object, result: object) -> bool:...
    def TryConvert(self, binder: ConvertBinder, result: object) -> bool:...
    def TryCreateInstance(self, binder: CreateInstanceBinder, args: _n_0_t_1[object], result: object) -> bool:...
    def TryDeleteIndex(self, binder: DeleteIndexBinder, indexes: _n_0_t_1[object]) -> bool:...
    def TryDeleteMember(self, binder: DeleteMemberBinder) -> bool:...
    def TryGetIndex(self, binder: GetIndexBinder, indexes: _n_0_t_1[object], result: object) -> bool:...
    def TryGetMember(self, binder: GetMemberBinder, result: object) -> bool:...
    def TryInvoke(self, binder: InvokeBinder, args: _n_0_t_1[object], result: object) -> bool:...
    def TryInvokeMember(self, binder: InvokeMemberBinder, args: _n_0_t_1[object], result: object) -> bool:...
    def TrySetIndex(self, binder: SetIndexBinder, indexes: _n_0_t_1[object], value: object) -> bool:...
    def TrySetMember(self, binder: SetMemberBinder, value: object) -> bool:...
    def TryUnaryOperation(self, binder: UnaryOperationBinder, result: object) -> bool:...
class ExpandoObject(IDynamicMetaObjectProvider, _n_1_t_2[str, object], _n_3_t_0):
    def __init__(self) -> ExpandoObject:...
class GetIndexBinder(DynamicMetaObjectBinder):
    @property
    def CallInfo(self) -> CallInfo:"""CallInfo { get; } -> CallInfo"""
    def FallbackGetIndex(self, target: DynamicMetaObject, indexes: _n_0_t_1[DynamicMetaObject], errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackGetIndex(self, target: DynamicMetaObject, indexes: _n_0_t_1[DynamicMetaObject]) -> DynamicMetaObject:...
class GetMemberBinder(DynamicMetaObjectBinder):
    @property
    def IgnoreCase(self) -> bool:"""IgnoreCase { get; } -> bool"""
    @property
    def Name(self) -> str:"""Name { get; } -> str"""
    def FallbackGetMember(self, target: DynamicMetaObject, errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackGetMember(self, target: DynamicMetaObject) -> DynamicMetaObject:...
class IDynamicMetaObjectProvider():
    def GetMetaObject(self, parameter: _n_4_t_1) -> DynamicMetaObject:...
class IInvokeOnGetBinder():
    @property
    def InvokeOnGet(self) -> bool:"""InvokeOnGet { get; } -> bool"""
class InvokeBinder(DynamicMetaObjectBinder):
    @property
    def CallInfo(self) -> CallInfo:"""CallInfo { get; } -> CallInfo"""
    def FallbackInvoke(self, target: DynamicMetaObject, args: _n_0_t_1[DynamicMetaObject], errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackInvoke(self, target: DynamicMetaObject, args: _n_0_t_1[DynamicMetaObject]) -> DynamicMetaObject:...
class InvokeMemberBinder(DynamicMetaObjectBinder):
    @property
    def CallInfo(self) -> CallInfo:"""CallInfo { get; } -> CallInfo"""
    @property
    def IgnoreCase(self) -> bool:"""IgnoreCase { get; } -> bool"""
    @property
    def Name(self) -> str:"""Name { get; } -> str"""
    def FallbackInvoke(self, target: DynamicMetaObject, args: _n_0_t_1[DynamicMetaObject], errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackInvokeMember(self, target: DynamicMetaObject, args: _n_0_t_1[DynamicMetaObject], errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackInvokeMember(self, target: DynamicMetaObject, args: _n_0_t_1[DynamicMetaObject]) -> DynamicMetaObject:...
class SetIndexBinder(DynamicMetaObjectBinder):
    @property
    def CallInfo(self) -> CallInfo:"""CallInfo { get; } -> CallInfo"""
    def FallbackSetIndex(self, target: DynamicMetaObject, indexes: _n_0_t_1[DynamicMetaObject], value: DynamicMetaObject, errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackSetIndex(self, target: DynamicMetaObject, indexes: _n_0_t_1[DynamicMetaObject], value: DynamicMetaObject) -> DynamicMetaObject:...
class SetMemberBinder(DynamicMetaObjectBinder):
    @property
    def IgnoreCase(self) -> bool:"""IgnoreCase { get; } -> bool"""
    @property
    def Name(self) -> str:"""Name { get; } -> str"""
    def FallbackSetMember(self, target: DynamicMetaObject, value: DynamicMetaObject, errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackSetMember(self, target: DynamicMetaObject, value: DynamicMetaObject) -> DynamicMetaObject:...
class UnaryOperationBinder(DynamicMetaObjectBinder):
    @property
    def Operation(self) -> _n_4_t_0:"""Operation { get; } -> ExpressionType"""
    def FallbackUnaryOperation(self, target: DynamicMetaObject, errorSuggestion: DynamicMetaObject) -> DynamicMetaObject:...
    def FallbackUnaryOperation(self, target: DynamicMetaObject) -> DynamicMetaObject:...
